package com.xm.service.background;


import com.xm.dao.background.CommodityDao;
import com.xm.entity.Commodity;
import com.xm.entity.Page;
import com.xm.exception.SqlErrorException;

import java.math.BigDecimal;
import java.util.List;


/**
 * @author 吴
 * 2024年1月3日
 */
public class CommodityService{
    private final CommodityDao dao = new CommodityDao();
    /**
     * 分页查询
     * @param pageNumber 分页页数
     * @param pageSize 每页数量
     * @return page<对象>
     */
    public Page<Commodity> pagination(int pageNumber, int pageSize, String name,Integer state) {
        return dao.pagination(pageNumber,pageSize,name,state);
    }
    /**
     * 修改状态
     *
     * @param commodityId 商品ID
     * @param status 状态,0是上架，2是下架
     * @return 成功返回true，失败返回false
     * @throws SqlErrorException SQL执行异常
     */
    public boolean updateAllSelectedStatus(Integer commodityId, Integer status) throws SqlErrorException {
        return dao.updateAllSelectedStatus(commodityId,status);
    }
    /**
     * 根据id查询
     *
     * @return 对象
     */
    public Commodity getCommodityById(Integer commodityId){
        return dao.getCommodityById(commodityId);
    }

    /**
     * 根据商品Id和仓库Id查询
     * @param commodityId 商品Id
     * @param warehouseId 仓库Id
     * @return 对象
     */
    public Commodity getCommodityByIdAndByWarehouseId(Integer commodityId,Integer warehouseId) {
        return dao.getCommodityByIdAndByWarehouseId(commodityId,warehouseId);
    }

    /**
     * 根据多个ID查询商品及其赠品和仓库信息
     *
     * @param commodityIds 多个商品ID
     * @param warehouseId  仓库ID
     * @return 商品列表
     * @throws SqlErrorException SQL执行异常
     */
    public List<Commodity> getCommoditiesByIds(String[] commodityIds,Integer warehouseId) throws SqlErrorException {
        return dao.getCommoditiesWithGiftsAndWarehouseByIds(commodityIds,warehouseId);
    }
    /**
     * 根据商品Id修改商品名称
     * @param commodityId 商品Id
     * @param commodityImageName 商品名称
     * @return 修改成功返回true，失败返回false
     * @throws SqlErrorException SQL执行异常
     */
    public boolean updateCommodityImgNameById(Integer commodityId, String commodityImageName) throws SqlErrorException {
        return dao.updateCommodityImgNameById(commodityId, commodityImageName);
    }
    /**
     * 根据商品Id修改商品名称和keywords
     * @param commodityId 商品Id
     * @param keywords 商品关键词
     * @return 修改成功返回true，失败返回false
     * @throws SqlErrorException SQL执行异常
     */
    public boolean updatedKeywordsById(Integer commodityId, String keywords) throws SqlErrorException {
        return dao.updatedKeywordsById(commodityId, keywords);
    }
    /**
     * 根据商品Id修改商品描述
     * @param commodityId 商品Id
     * @param commodityDescription 商品描述
     * @return 修改成功返回true，失败返回false
     * @throws SqlErrorException SQL执行异常
     */
    public boolean updateCommodityDescriptionById(Integer commodityId, String commodityDescription) throws SqlErrorException {
        return dao.updateCommodityDescriptionById(commodityId, commodityDescription);
    }
    /**
     * 根据商品ID修改商品赠品
     *
     * @param commodityId    商品ID
     * @param commodityGifts 新的商品赠品
     * @return 修改成功返回true，失败返回false
     * @throws SqlErrorException SQL执行异常
     */
    public boolean updateCommodityGiftsById(Integer commodityId, Integer commodityGifts) throws SqlErrorException {
        return dao.updateCommodityGiftsById(commodityId, commodityGifts);
    }
    /**
     * 根据商品ID修改商品折扣
     *
     * @param commodityId      商品ID
     * @param commodityDiscount 新的商品折扣
     * @return 修改成功返回true，失败返回false
     * @throws SqlErrorException SQL执行异常
     */
    public boolean updateCommodityDiscountById(Integer commodityId, Integer commodityDiscount) throws SqlErrorException {
        return dao.updateCommodityDiscountById(commodityId, commodityDiscount);
    }
    /**
     * 根据商品ID修改商品价格
     *
     * @param commodityId   商品ID
     * @param newPrice      新的商品价格
     * @return 修改成功返回true，失败返回false
     * @throws SqlErrorException SQL执行异常
     */
    public boolean updateCommodityPriceById(Integer commodityId, BigDecimal newPrice) throws SqlErrorException {
        return dao.updateCommodityPriceById(commodityId, newPrice);
    }
    /**
     * 根据商品ID修改商品名称
     *
     * @param commodityId   商品ID
     * @param newName       新的商品名称
     * @return 修改成功返回true，失败返回false
     * @throws SqlErrorException SQL执行异常
     */
    public boolean updateCommodityNameById(Integer commodityId, String newName) throws SqlErrorException {
        return dao.updateCommodityNameById(commodityId, newName);
    }
    /**
     * 新增商品
     *
     * @param commodity 商品对象
     * @return 新增成功返回true，失败返回false
     * @throws SqlErrorException SQL执行异常
     */
    public Integer addCommodity(Commodity commodity) throws SqlErrorException {
        return dao.addCommodity(commodity);
    }
}


